#include "TelephoneBook.h"
#include "TelephoneInfo.h"
#include "MyString.h"

#include <stdio.h>
#include <stdbool.h>
#include <string.h>

void Interface(Telebook *t)
{
    printf("1.添加联系人\n");
    printf("2.删除联系人\n");
    printf("3.查找联系人：通过姓名/电话号码\n");
    printf("4.修改联系人\n");
    printf("5.打印联系人信息\n");
    printf("6.退出\n");
}

void Init_Telebook(Telebook *t)
{
    t->size = 0;
}

void Add_User(Telebook *t)
{
    while (1)
    {
        printf("请输入联系人姓名：\n");
        //GetStr(&t->info[t->size].name);
        scanf("%s", t->info[t->size].name.str);
        InsertStr(&t->info[t->size].name, t->info[t->size].name.str);
        if (t->info[t->size].name.len == 0)
        {
            printf("请重新输入有效数据!\n");
            continue;
        }
        printf("请输入联系人号码： \n");
        //GetStr(&t->info[t->size].phone);
        scanf("%s", t->info[t->size].phone.str);
        InsertStr(&t->info[t->size].phone, t->info[t->size].phone.str);
        if (t->info[t->size].phone.len == 0)
        {
            printf("请重新输入有效数据!\n");
            continue;
        }
        t->size++;
        if (t->size == infoSize)
        {
            printf("数组已满，不允许再插入数据\n");
            return;
        }
        printf("插入成功！\n");
        printf("按回车键继续添加联系人,按N返回主界面 \n");
        getchar();
        char a='0';
        scanf("%c", &a);
        if (a == 'N')
        {
            break;
        }
    }
}

void Delete_User(Telebook *t)
{
    bool flag = false;
    printf("请输入要删除的联系人姓名/电话号码：\n");
    char user[10];
    scanf("%s", user);
    for (int i = 0; i < t->size; i++)
    {
        if (strcmp(t->info[i].name.str, user) == 0 || strcmp(t->info[i].phone.str, user) == 0)
        {
            for (int j = i; j < t->size - 1; j++)
            {
                t->info[j] = t->info[j + 1];
            }
            t->size--;
            flag = true;
            i--;
        }
    } 
    if (flag)
    {
        printf("删除联系人成功!\n");
        
    }
    else
    {
        printf("未查询到相关信息!\n");
    }
}

void Find_User(Telebook *t)
{
    bool flag = false;
    printf("请输入要查找的联系人姓名/电话号码：\n");
    char user[12];
    scanf("%s", user);
    for (int i = 0; i < t->size; i++)
    {
        if (strcmp(t->info[i].name.str, user) == 0 || strcmp(t->info[i].phone.str, user) == 0)
        {
            flag = true;
            printf("找到以下联系人信息：\n");
            Print_Telinfo(&t->info[i]);
        }
    }
    if (!flag)
    {
        printf("未查询到相关联系人\n");
    }
    getchar();
    getchar();
}

void Modify_User(Telebook *t)
{
    bool flag = false;
    printf("请输入要修改的联系人姓名：\n");
    char name[10];
    scanf("%s", name);
    for (int i = 0; i < t->size; i++)
    {
        if (strcmp(t->info[i].name.str, name) == 0)
        {
            flag = true;
            printf("请输入要修改的姓名：");
            getchar();
            GetStr(&t->info[i].name);
            printf("请输入要修改的电话号码：");
            getchar();
            GetStr(&t->info[i].phone);
        }
    }
    if (!flag)
    {
        printf("未查询到相关信息,请重新输入\n");
    }
}

void Print_Telebook(Telebook *t)
{
    printf("联系人信息: \n");
    for (int i = 0; i < t->size; i++)
    {
        Print_Telinfo(&t->info[i]);
        // printf("姓名：");
        // PrintStr(&t->info[i].name, false);
        // printf("电话号码： ");
        // PrintStr(&t->info[i].phone, true);
    }
    getchar();
    getchar();
}
